package com.castle.fortress.admin.study.exam.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.castle.fortress.admin.study.exam.entity.StudyQuestionbankEntity;
import com.castle.fortress.admin.study.exam.dto.StudyQuestionbankDto;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.Map;
import java.util.List;

/**
 * 题库管理 服务类
 *
 * @author castle
 * @since 2023-02-09
 */
public interface StudyQuestionbankService extends IService<StudyQuestionbankEntity> {

    /**
     * 分页展示题库管理列表
     * @param page
     * @param studyQuestionbankDto
     * @return
     */
    IPage<StudyQuestionbankDto> pageStudyQuestionbank(Page<StudyQuestionbankDto> page, StudyQuestionbankDto studyQuestionbankDto);

    /**
    * 分页展示题库管理扩展列表
    * @param page
    * @param studyQuestionbankDto
    * @return
    */
    IPage<StudyQuestionbankDto> pageStudyQuestionbankExtends(Page<StudyQuestionbankDto> page, StudyQuestionbankDto studyQuestionbankDto);
    /**
    * 题库管理扩展详情
    * @param id 题库管理id
    * @return
    */
    StudyQuestionbankDto getByIdExtends(Long id);

    /**
     * 展示题库管理列表
     * @param studyQuestionbankDto
     * @return
     */
    List<StudyQuestionbankDto> listStudyQuestionbank(StudyQuestionbankDto studyQuestionbankDto);

    /**
     * 开放学习的分页展示
     * @param page
     * @param studyQuestionbankDto
     * @return
     */
    IPage<StudyQuestionbankDto> pageOpenStudyQuestionbank(Page<StudyQuestionbankDto> page, StudyQuestionbankDto studyQuestionbankDto);

    /**
     * 删除指定分类下的题库
     * @param id
     */
    void delByTypeId(Long id);

    /**
     * 校验题库名称（同级分类下不能同名）
     * @param studyQuestionbankEntity
     * @return
     */
    boolean checkName(StudyQuestionbankEntity studyQuestionbankEntity);
}
